package com.fengkai.filepost.pdfoutstream.test.ODsolutions;

import java.util.Arrays;
import java.util.TreeSet;

/**
 * @author Fengkai
 * @creat 2023/4/21
 * 任务编排服务负责对任务进行组合调度。参与编排的任务有两种类型，其中一种执行时长为taskA，另一种执行时长为taskB。任务一旦开始执行不能被打断，且任务可连续执行。服务每次可以编排num个任务。请编写一个方法，生成每次编排后的任务所有可能的总执行时长。
 * 输入描述:
 * 第1行输入分别为第1种任务执行时长taskA，第2种任务执行时长taskB，这次要编排的任务个数num，以逗号分隔。
 * 输出描述:
 * 数组形式返回所有总执行时时长，需要按从小到大排列
 */
public class AllTaskCostTime {
    public static void main(String[] args) {
        System.out.println(getTaskCost("1,2,0"));
    }

    public static String getTaskCost(String input){
        String[] split = input.split(",");
        int taskA = Integer.parseInt(split[0]);
        int taskB = Integer.parseInt(split[1]);
        int num = Integer.parseInt(split[2]);
        if (num == 0){
            return "[]";
        }
        TreeSet<Integer> result = new TreeSet<>();
        for (int i = 0; i <= num; i++) {
            result.add(taskA * i + taskB * (num - i));
        }
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("[");
        for (Integer integer : result) {
            stringBuilder.append(integer + ",");
        }
        String s = stringBuilder.substring(0, stringBuilder.length() - 1);
        return s + "]";
    }
}
